add_custom_target(libc_sys_mman_unittests)

add_libc_unittest(
  mmap_test
  SUITE
    libc_sys_mman_unittests
  SRCS
    mmap_test.cpp
  DEPENDS
    libc.include.sys_mman
    libc.src.errno.errno
    libc.src.sys.mman.mmap
    libc.src.sys.mman.munmap
    libc.test.UnitTest.ErrnoSetterMatcher
)

add_libc_unittest(
  mremap_test
  SUITE
    libc_sys_mman_unittests
  SRCS
    mremap_test.cpp
  DEPENDS
    libc.include.sys_mman
    libc.src.errno.errno
    libc.src.sys.mman.mmap
    libc.src.sys.mman.mremap
    libc.src.sys.mman.munmap
    libc.test.UnitTest.ErrnoSetterMatcher
)

if (NOT LLVM_USE_SANITIZER)
  add_libc_unittest(
    mprotect_test
    SUITE
      libc_sys_mman_unittests
    SRCS
      mprotect_test.cpp
    DEPENDS
      libc.include.sys_mman
      libc.include.signal
      libc.src.errno.errno
      libc.src.sys.mman.mmap
      libc.src.sys.mman.munmap
      libc.src.sys.mman.mprotect
      libc.test.UnitTest.ErrnoSetterMatcher
  )
endif()

add_libc_unittest(
  madvise_test
  SUITE
    libc_sys_mman_unittests
  SRCS
  madvise_test.cpp
  DEPENDS
    libc.include.sys_mman
    libc.src.errno.errno
    libc.src.sys.mman.mmap
    libc.src.sys.mman.munmap
    libc.src.sys.mman.madvise
    libc.test.UnitTest.ErrnoSetterMatcher
)


add_libc_unittest(
  posix_madvise_test
  SUITE
    libc_sys_mman_unittests
  SRCS
  posix_madvise_test.cpp
  DEPENDS
    libc.include.sys_mman
    libc.src.errno.errno
    libc.src.sys.mman.mmap
    libc.src.sys.mman.munmap
    libc.src.sys.mman.posix_madvise
    libc.test.UnitTest.ErrnoSetterMatcher
)

add_libc_unittest(
  mincore_test
  SUITE
    libc_sys_mman_unittests
  SRCS
    mincore_test.cpp
  DEPENDS
    libc.include.sys_mman
    libc.include.unistd
    libc.src.errno.errno
    libc.src.sys.mman.mmap
    libc.src.sys.mman.munmap
    libc.src.sys.mman.madvise
    libc.src.sys.mman.mincore
    libc.src.sys.mman.mlock
    libc.src.sys.mman.munlock
    libc.src.unistd.sysconf
    libc.test.UnitTest.ErrnoSetterMatcher
)

add_libc_unittest(
  mlock_test
  SUITE
    libc_sys_mman_unittests
  SRCS
    mlock_test.cpp
  DEPENDS
    libc.include.sys_mman
    libc.include.unistd
    libc.src.errno.errno
    libc.src.sys.mman.mmap
    libc.src.sys.mman.munmap
    libc.src.sys.mman.madvise
    libc.src.sys.mman.mincore
    libc.src.sys.mman.mlock
    libc.src.sys.mman.mlock2
    libc.src.sys.mman.munlock
    libc.src.sys.mman.mlockall
    libc.src.sys.mman.munlockall
    libc.src.sys.resource.getrlimit
    libc.src.__support.OSUtil.osutil
    libc.src.unistd.sysconf
    libc.test.UnitTest.ErrnoSetterMatcher
)

add_libc_unittest(
  msync_test
  SUITE
    libc_sys_mman_unittests
  SRCS
    msync_test.cpp
  DEPENDS
    libc.include.sys_mman
    libc.include.unistd
    libc.src.errno.errno
    libc.src.sys.mman.mmap
    libc.src.sys.mman.munmap
    libc.src.sys.mman.msync
    libc.src.sys.mman.mincore
    libc.src.sys.mman.mlock
    libc.src.sys.mman.munlock
    libc.src.unistd.sysconf
    libc.test.UnitTest.ErrnoSetterMatcher
)

add_libc_unittest(
  remap_file_pages_test
  SUITE
    libc_sys_mman_unittests
  SRCS
    remap_file_pages_test.cpp
  DEPENDS
    libc.include.sys_mman
    libc.include.sys_stat
    libc.src.unistd.sysconf
    libc.test.UnitTest.ErrnoSetterMatcher
    libc.src.sys.mman.remap_file_pages
    libc.src.errno.errno
    libc.src.sys.mman.mmap
    libc.src.sys.mman.munmap
)

add_libc_unittest(
  shm_test
  SUITE
    libc_sys_mman_unittests
  SRCS
    shm_test.cpp
  DEPENDS
    libc.include.sys_mman
    libc.include.sys_syscall
    libc.src.errno.errno
    libc.src.fcntl.fcntl
    libc.src.sys.mman.shm_open
    libc.src.sys.mman.shm_unlink
    libc.src.sys.mman.mmap
    libc.src.sys.mman.munmap
    libc.src.unistd.ftruncate
    libc.src.unistd.close
    libc.src.__support.OSUtil.osutil
    libc.hdr.fcntl_macros
    libc.test.UnitTest.ErrnoSetterMatcher
)
